package Estructuras;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

import Persona.Persona;
import administracion.AdministradorSistema;


public class RegistroMascota extends Registro{
	private static Persona obtenerPersona(String nombreUsuario,ArrayList<Persona> listaPersonas){
		int indiceLista= 0;
		while(indiceLista < listaPersonas.size()){
			if(listaPersonas.get(indiceLista).getNombreusuario() == nombreUsuario){
				return listaPersonas.get(indiceLista);
			}
			indiceLista++;
		}
		return null;
	}
	
	public static void obtenerDatos(ArrayList<Mascota> lista) {
		char buffer[]= new char[512];
		int caracteresBuffer= 0;
		int indiceBuffer= 0;
		File archivo= null;
		FileReader lector;
		try{
			archivo= new File("Mascotas.txt");
			lector= new FileReader(archivo);
			caracteresBuffer= lector.read(buffer,0,512);
			while(caracteresBuffer!= -1){
				if(buffer[indiceBuffer] == '['){
					Mascota mascota= null;
					int indiceAtributos= 0;
					String palabra= "";
					indiceBuffer++;
					
					while(indiceAtributos!= 14){
						if(indiceBuffer == caracteresBuffer){
							caracteresBuffer= lector.read(buffer,0,512);
							indiceBuffer= 0;
						}
						if(buffer[indiceBuffer] == ',' || buffer[indiceBuffer] == ']'){
							if(indiceAtributos == 0) mascota= new Mascota(palabra);
							else if(indiceAtributos == 1) mascota.setTipo(palabra);
							else if(indiceAtributos == 2) mascota.setRaza(palabra);
							else if(indiceAtributos == 3) mascota.setChipIdentificador(palabra);
							else if(indiceAtributos == 4) mascota.setEstado(palabra);
							else if(indiceAtributos == 5) mascota.setLugarPerdida(palabra);
							else if(indiceAtributos == 6) mascota.setLugarEncontrado(palabra);
							else if(indiceAtributos == 7) mascota.setColor(palabra);
							else if(indiceAtributos == 8) mascota.setFechaExtravio(palabra);
							else if(indiceAtributos == 9) mascota.setFechaEncontrado(palabra);
							else if(indiceAtributos == 10) mascota.setMontoRecompensa(Integer.parseInt(palabra));
							else if(indiceAtributos == 11) mascota.setDescripcion(palabra);
							else if(indiceAtributos == 12) mascota.setImagen(null);
							else if(indiceAtributos == 13){
								if(palabra == null) {
									System.out.println("ENTRE");
									mascota.setEncargado(null);
								}
								else {
									ArrayList<Persona> listaPersonas= new ArrayList<Persona>();;
									RegistroPersona.obtenerDatos(listaPersonas);
									mascota.setEncargado(obtenerPersona(palabra,listaPersonas));
								}
							}
							palabra= "";
							indiceAtributos++;
							indiceBuffer++;
						}
						palabra+= buffer[indiceBuffer];
						indiceBuffer++;
					}
					indiceBuffer--;
					indiceBuffer--;
					lista.add(mascota);
				}
				indiceBuffer++;
				if(indiceBuffer >= caracteresBuffer){
					caracteresBuffer= lector.read(buffer,0,512);
					indiceBuffer= 0;
				}
			}
			lector.close();
		}
		catch(IOException e){
			System.out.println("Error, no se pudo obtener el registro");
		}
	}
}
